package com.ldu.houserent.common.util;

import com.ldu.houserent.common.constant.Constant;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

/**
 * 文件上传处理的类
 */
public class FileUtil {
    /**
     * 文件上传
     */
    public static Map<String,String> upload(MultipartFile file) throws Exception{
        //声明map
        Map<String,String> resultMap = new HashMap<>();
        File mediaPath=new File(Constant.UPLOADS_PATH);     //通过文件路径获取到文件夹
        if (!mediaPath.exists()){    //若文件夹不存在，则创建文件夹
            //mediaPath.mkdirs();
            if (!mediaPath.mkdirs()){
                throw new Exception("文件上传失败，无法创建文件夹");
            }
        }
        //获取到原始文件名
        String originFileName = file.getOriginalFilename();
        //扩展名（后缀）
        String fileSuffix = originFileName.substring(originFileName.lastIndexOf(".")+1);        //substring表示从.的后一位开始取值
        //新文件名
        String nameWithoutSuffix = UUID.randomUUID().toString().replaceAll("-","");     //将UUID在生成过程中多产生的所有-用空来替换，即删掉所有的-
        //带后缀的新文件名
        String newFileName = nameWithoutSuffix + "." + fileSuffix;
        //上传
        File descFile = new File(mediaPath.getAbsoluteFile(),newFileName);
        file.transferTo(descFile);
        //映射路径，目的是将上传的图片内容保存到数据库中
        String filePath = Constant.UPLOADS_ABSOLUTE_PATH + newFileName;
        resultMap.put("fileName",originFileName);    //文件名   //存放到resultMap中
        resultMap.put("filePath",filePath);         //路径
        resultMap.put("fileSuffix",fileSuffix);     //后缀
        return resultMap;

    }
}
